#ifndef __ResourceManager__h__included__
#define __ResourceManager__h__included__
          
#include "Base.h"

// #include "a3dsLoader.h"
// #include "aASELoader.h"
// #include "aXMLReader.h"
// #include "aBMPReader.h"
// #include "aNScriptLoader.h"
// #include "RenderingTexture.h"
// #include "RenderingAlphabet.h"

// #include "mesh.h"
// #include "image.h"

#include <map>
#include <string>

// using std::map;
// using std::string;
// using neiderra::rendering::Mesh;
// using neiderra::rendering::Image;
// using neiderra::rendering::Texture;
// using neiderra::rendering::Alphabet;

// using namespace neiderra::core::io::loaders;
// using neiderra::core::io::loaders::script::aNScriptLoader;

namespace neiderra {
	 
/*	namespace rendering 
	{
		class Mesh;
		class Texture;
		class Alphabet;
		class Image;
	}
	using rendering::Mesh;
	using rendering::Texture;*/
	
	
	
	namespace core {

// 		struct Resource;
		
		//! Resource management
		class ResourceManager: public Base
		{
			public:
				ResourceManager(Core* core);
				virtual ~ResourceManager();
				
/*				virtual a3dsLoader*	get3dsLoader();
				virtual aASELoader* getASELoader();
				virtual aXMLReader* getXMLReader();
				virtual aBMPReader* getBMPReader() { return bmpr_; }*/
// 				virtual aNScriptLoader* getNScriptLoader() { return nscl_; }

/*				virtual bool addMesh(const string& name, MeshObjects*);
				virtual MeshObjects* getMeshes(const string& name);

				//virtual bool addTexture(const string& name, Image*);
				virtual Image* getTexture(const string& name);*/
/*				virtual bool addTexture(const string& name, Texture*);
				virtual Texture* getTexture(const string& name);

				virtual bool addAlphabet(const string& name, Alphabet*);
				virtual Alphabet* getAlphabet(const string& name);
				virtual Alphabet* getSystemAlphabet();
				virtual void setSystemAlphabet(Alphabet*);*/
				
			protected:

// 				map<string, MeshObjects*> _meshes;
// 				map<string, Texture*> _textures;
// 				map<string, Alphabet*> _alphabetas;

/*				a3dsLoader* x3ds_;
				aASELoader* asel_;
				aXMLReader* xmlr_;
				aBMPReader* bmpr_;
				aNScriptLoader* nscl_;*/
				
// 				Alphabet* _sysAlphabet;
		};

		//enum ResourceType { Mesh, Texture };
		//union ResourceValue {
		//	Mesh* mesh;
		//	Image* texture;
		//}

		//struct Resource {
		//	string path;
		//	ResourceType type;
		//	ResourceValue value;
		//};

	}
}

#endif 
